package com.example.tareasAsincronas;


import java.io.Serializable;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.example.dataBase.Emplazamiento;

import android.os.AsyncTask;

public class PedirXML extends AsyncTask<Void, Object, Emplazamiento>implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -4199137806741288842L;
	private String url;
	private double lat,lon;
	private String comunidad,direccion;


	@Override
	protected Emplazamiento doInBackground(Void... params) {
		// TODO Auto-generated method stub
		String calle="";
		String localidad="";
		String numero="";
		
		try {
			HttpClient cliente=new DefaultHttpClient();
			url="http://maps.googleapis.com/maps/api/geocode/xml?address="+lat+"%20"+lon;
			HttpGet peticion=new HttpGet(url);		
			HttpResponse resp=cliente.execute(peticion);
			String respStr=EntityUtils.toString(resp.getEntity());
			
			String[] trozos=respStr.split("\n");
			int i=0;
			boolean encLocalidad=false;

			
			while((i<trozos.length)&&(!encLocalidad)){
				String linea=trozos[i];
				linea=linea.replace(" ","");
				
				if(linea.equalsIgnoreCase("<type>street_number</type>")){
					numero=trozos[i-1];
					numero=normaliza(numero);
				}		
				if(linea.equalsIgnoreCase("<type>route</type>")){
					calle=trozos[i-1];
					calle=normaliza(calle);
				}
				if(linea.equalsIgnoreCase("<type>administrative_area_level_1</type>")){
					localidad=trozos[i-2];
					localidad=normaliza(localidad);
					encLocalidad=true;
				}
				i=i+1;
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		comunidad=localidad;
		direccion=calle+" "+numero;
				
		Emplazamiento emplazamiento=new Emplazamiento(comunidad,direccion);
		
		return emplazamiento;
	}
	
	private String normaliza(String palabra){
		String[] fragmentos1=palabra.split(">");
		String[] fragmentos2=fragmentos1[1].split("<");
		fragmentos2[0]=fragmentos2[0].replace(" ","_");
		return fragmentos2[0];
	}

	public double getLat() {
		return lat;
	}

	public void setLat(double lat) {
		this.lat = lat;
	}

	public double getLon() {
		return lon;
	}

	public void setLon(double lon) {
		this.lon = lon;
	}

	public String getComunidad() {
		return comunidad;
	}

	public void setComunidad(String comunidad) {
		this.comunidad = comunidad;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

}
